package main

import "fmt"

// 解释为什么下边这个程序会导致 panic：所有的协程都休眠了 - 死锁！

func fp(in chan int) {
	fmt.Println(<-in)
}

func main() {
	out := make(chan int, 1)
	// 先执行goroutine再写值到chan是OK的
	// go fp(out)
	// out <- 10

	// 无缓冲chan需要先准备好接收者
	out <- 10
	// go fp(out)
	i := <-out
	fmt.Println("chan val: ", i)
}
